An Interactive Voice Response unit (IVR) is an automated telephone answering system, which responds to a user's telephone call with a voice menu and allows the user to make choices and enter information. IVR systems are widely used in call centers as well as a replacement for human switchboard operators. An IVR system may also integrate database access and fax response.
IVR systems are typically partnered with an appropriate application to provide services. Traditionally, IVR application developers required an in-depth knowledge of one of numerous proprietary IVR development environments, as well as knowledge of a programming language such as C or C++. The development of these applications was both time consuming and costly. Furthermore, IVRs with speech recognition applications required knowledge of proprietary voice recognition systems
Recently, the introduction of VoiceXML has alleviated the need of application developers to know the low-level programming necessary to drive the proprietary telephony hardware and speech recognition systems. By enabling the VoiceXML developers to focus on the application and removing the need to understand the low-level programming, the development cycle and the time to market is shortened.
A VoiceXML environment comprises a VoiceXML document on a VoiceXML document server and a VoiceXML Interpreter. The VoiceXML document specifies each interaction dialog to be conducted by a VoiceXML Interpreter. The user's input can affect the dialogue interpretation.
Historically, an IVR unit was a closed system. VoiceXML enables IVR applications to take advantage of a distributed IP network approach, enabled through traditional client/server architecture. VoiceXML uses Internet protocols, particularly HTTP in order to access document servers. One problem with client/server interaction is the process involved in accessing the server in order to retrieve documents. This process can often prove to be lengthy and ineffective. One solution VoiceXML offers is to specify multiple interactions per document, thus minimizing client/server interactions.
An additional solution to the problem of the client/server environment is the use of caching. The VoiceXML Interpreter, just like HTML visual browsers, can use caching to improve performance in fetching documents and other resources. For example, audio recordings, which can be quite large, are as common to VoiceXML documents as images are to HTML pages and therefore should be cached.
HTML browsers typically perform client side caching, whereby the caching is managed by the client. Server side caching is more difficult; the cache must be maintained for the entire application. Multiple users request documents simultaneously, thereby requiring increased efficiency. One example of efficient server side caching is the PERL® module ‘mod_perl’ used under the APACHE® web server, which compiles and caches PERL® in scripting languages. PERL® (Practical Extraction and Reporting Language) is a popular script language used in programming. PERL® is often used in an APACHE® environment by linking the PERL® runtime library into the server and providing an object oriented PERL® interface to the server's C language API. These components are bound together by the mod_perl server plug-in, making it possible to write APACHE® modules in PERL®.
Another aspect of the VoiceXML environment, a function of the fact that it is a scripting language, is its limited extensibility. The VoiceXML Interpreter essentially only runs scripts and functions in accordance with the relevant VoiceXML specification. In order to obtain a level of enhanced functionality, the specification specifies the object tag. An object tag primarily imports outside resources into a web page, such as JAVA® applets, multimedia files, web plug-ins or ACTIVEX® components. Object tags enable the addition of special functions and local functions external to the current VoiceXML specification. An example of one such implementation of object tags is NUANCE's®, which employs a virtual JAVA® machine. Through the use of tags, the application developer can specify JAVA® speech objects (modules), which are loaded into the JAVA® virtual machine and provide enhanced functionality.
The VoiceXML environment adds complexity to IVR systems. This complexity makes it harder to fulfill the requirement for high availability, whereby the IVR user interacting with the system should experience as little interference and malfunction as possible.